在查詢IoC的資料的時候多半會查到,IoC是一個原則(principle),而Dependency Injection是IoC的一種實現方式。那麼IoC是什麼呢?IoC是物件或部分程式控制權的轉移,由容器(container)或框架(framework)得到控制權。
Spring IoC指的是物件控制權的轉移,將物件生成的管理交給container處理。由於IoC存在著不只一個意思,因此大老Martin Fowler認為使用Dependency Injection可以避免IoC概念上的混淆。
切面導向程式設計,用意在於將橫切關注點(cross-cutting concern)模組化,而橫切面的關注點常出現在不同的程式中,例如log紀錄、transaction management、認證授權等。AOP的特色是這些橫切面可以獨立於應用程式,可以透過設定的方式進入原本module中。
圖片來源:https://www.edureka.co/blog/spring-aop-tutorial/
上述的圖示可以參考官方文件Spring doc 4.3.x,不過Web模組中的Porlet已不在新版的5.x.x中,可以從下載的distribution看到,取而代之的是spring-webflux(响應式非阻塞的web框架)
各模組說明可以參考官方文件